using System;

namespace MiFi {
	/// <summary>
	/// GPS location data for a MiFi device.
	/// </summary>
	public class MiFiLocation {
		/// <summary>
		/// Altitude from sea level in meters.
		/// </summary>
		public double Altitude { get; set; }

		/// <summary>
		/// Angle of uncertainty in meters.
		/// </summary>
		public double AngleOfUncertainty { get; set; }

		/* public object FixType { get; set; } */

		/// <summary>
		/// Orientation of the device in degrees (0-360).
		/// </summary>
		public double Heading { get; set; }

		/// <summary>
		/// Horizontal speed in meters per second.
		/// </summary>
		public double HorizontalVelocity { get; set; }

		/// <summary>
		/// Latitude including degrees, minutes, and seconds. (-90.0 to +90.0)
		/// </summary>
		public double Latitude { get; set; }

		/// <summary>
		/// Longitude including degrees, minutes, and seconds. (-180.00 to +180.00)
		/// </summary>
		public double Longitude { get; set; }

		/// <summary>
		/// Perpdendicular uncertainty in meters.
		/// </summary>
		public double PerpendicularUncertainty { get; set; }

		/// <summary>
		/// Standard deviation uncertainty in meters.
		/// </summary>
		public double StandardDeviationUncertainty { get; set; }

		/// <summary>
		/// Local date and time at which the current location was retrieved.
		/// </summary>
		public DateTime Timestamp { get; set; }

		/// <summary>
		/// Vertical uncertainty in meters.
		/// </summary>
		public double VerticalUncertainty { get; set; }

		/// <summary>
		/// Vertical speed in meters per second.
		/// </summary>
		public double VerticalVelocity { get; set; }

		/// <summary>
		/// Horizontal accuracy in meters.
		/// </summary>
		public double HorizontalAccuracy { get; set; }

		/// <summary>
		/// Vertical accuracy in meters.
		/// </summary>
		public double VerticalAccuracy { get; set; }

		/// <summary>
		/// GPS fix status.
		/// </summary>
		/// <remarks>
		/// True if the device has valid fix data.
		/// </remarks>
		public bool HasFix { get; set; }
	}
}